In such IC cards, the onboard microprocessor is adapted to control access by an external terminal to the onboard memory. Most typically, access is by way of the microprocessor reading specific areas of memory and outputting desired information on its I/O lines for coupling to the terminal. However, more direct transfers of information between the memory and an external device under the control of the microprocessor are also possible.
IC cards are being developed to perform ever more complex transactions, or groups of transactions, and in so doing are utilizing more and more of the processing power and storage capacity made available by modern microelectronics. Although the capabilities of the IC card are thus increasing, with the possibility of performing multiple types of diverse transactions in connection with the same or multiple types of diverse terminals, the demands on the capabilities of the IC card are becoming more stringent. In general, in a multiple application IC card, the card is designed to partition the onboard memory space into separate application blocks and to allow a particular application (i.e., a type of transaction to be performed with a particular type of terminal) access to only the application block or blocks of memory assigned to that type of transaction. Since the types of transactions are different in scope, complexity and amount of memory required, it is desirable to allow the onboard microprocessor to partition the memory into blocks of varying size.
In an IC card system, sequences of operation are usually performed between the IC card unit and the person who possesses the IC card, as well as between the card unit and a terminal which directly operates the IC card. If the IC card is inserted into the terminal by the operator, the terminal applies a power source clock or the like so as to actuate the IC card, thereby enabling discrimination, collation, identification of the possessor of the IC card and so forth between the IC card and the terminal. This preliminary sequence can often involve assuring that the card is compatible with the terminal, checking the identification of the user to ascertain whether he has proper possession of the card, determining that the application to be accessed is available through the terminal and accessible to the card, accessing a file in the terminal data base which is assigned to the particular user, etc.
After these preliminary operations have been completed, the terminal identifies a specific block in the memory of the IC card and gains access to this block in order to perform the desired application. While various methods are available for accessing the block and performing the application, the process involves, in any event, reading the accessed block of the memory.
In general, in the case of the conventional multi-application IC card, the overall data recording error management (data error checking) is performed by the terminal alone. That is, the IC card has, in application blocks of its memory, items of directory information for access to items of data recorded in the the memory, and error check codes appended to the recorded application data for data recording error management. While the IC card can read or write recording data by using the directory, it cannot recognize or interpret an error check code recorded as the tail end of items of data recorded in each block. To effect recording data error management, the terminal must use its processing power to provide a means for searching for an error check code which is contained in the recorded data items in the accessed application block, a means for performing error checking on the basis of the contents of the recorded data and the error check code which it had located, and a means for producing an error check code from data items to be recorded. Thus, in the case of the conventional IC card, it is the terminal which incorporates these means and performs recording data error management according to its particular error checking algorithm or procedure for accessing the card. In this case, to partially change a data block, it is necessary for the terminal to read out the whole of the corresponding data block recorded in the IC card (recording data and error check code) in order to produce an error check code for this data block, since an error check code is recorded in each individual data block in the IC card which is recorded by the terminal. If the terminal in question belongs to a group which provides a plurality of application systems, it must be provided with sets of means of the above-mentioned types adapted for different types of error check codes or error code setting methods specific to those application systems. Therefore, if the terminal performs the recording data error management, the load on the terminal increases substantially.
In addition, there is the possibility of recorded data and a corresponding error check code in the conventional IC card being intentionally changed since, as described above, both the recorded data and the error check code are read out by the terminal in order to process the recorded data. This change cannot be detected by performance of a subsequent error check code operation. There is therefore a problem in terms of data security.
An example of a conventional IC card having a self-checking or on the card function for data errors is also known. While this IC card can compute an error check code on board the card, it is necessary to attach an error check code to each individual data item. As a result, the proportion of memory areas occupied by error check codes is significantly increased, and this is disadvantageous in terms of efficiency of the use of the IC card memory.